<?php   

//require_once(APPPATH."classes/estado.php");
require_once(APPPATH."classes/cliente.php");
require_once(APPPATH."classes/local_entrega.php");
require_once(APPPATH."classes/pedido.php");

class paravoce_model extends CI_Model{

    public function __construct(){
        parent::__construct();
    }

    /*public function login($email, $senha){
    	$validacao = array(true, '');

        $this->db->select('cod_cliente_auto, nome');
    	$this->db->where('email_cliente', $email);
    	$this->db->where('senha_cliente', $senha);
    	$query = $this->db->get('cliente');

    	if(!$query || $query->num_rows() == 0){
    		$validacao = array(false, 'Usuário ou senha inválidos');
    	}else{
            $row = $query->row();
            $validacao = array(true, $row->cod_cliente_auto, $row->nome);
        }

    	return $validacao;
    }*/

    public function getMaisVendidos()
    {
        $sql = '
            SELECT  ip.cod_item_auto,
                    i.desc_item nome,
                    coalesce(e.nome_fantasia, e.razao_social, "Empresa sem nome") nome_empresa,
                    i.obs obs,
                    t.desc_tamanho tamanho,
                    ti.preco_item preco,
                    coalesce(fi.caminho_foto, "semfoto.jpg") foto
            FROM    item_pedido ip
                    INNER JOIN item i ON ip.cod_item_auto = i.cod_item_auto
                    INNER JOIN empresa e ON i.cod_empresa_auto = e.cod_empresa_auto
                    INNER JOIN tamanho t ON ip.cod_tamanho_auto = t.cod_tamanho_auto
                    INNER JOIN tamanho_item ti ON ip.cod_item_auto = ti.cod_item_auto
                    LEFT JOIN foto_item fi ON i.cod_item_auto = fi.cod_item_auto
            WHERE   i.item_indisponivel <> 1
            GROUP BY ip.cod_item_auto, nome, nome_empresa, obs, tamanho, preco, foto
            ORDER BY count(ip.cod_item_auto) DESC
            LIMIT 5;
            ';

        $query = $this->db->query($sql);        
        $lista = array();

        if ($query && $query->num_rows > 0) {
            foreach ($query->result() as $row) {
                $lista[] = $row;
            }
        }

        return $lista;
    }

    public function getDetalhesPedido($codPedido) {
        $sql = '
            SELECT  
                IP.cod_item_ped_auto,
                IP.cod_item_auto,
                COALESCE(P.num_pedido, "") pedido_numero,
                IP.seq_item sequencia,
                I.desc_item item,
                T.desc_tamanho tamanho,
                IP.preco_unitario item_preco,       
                IP.qtd_item qtd,
                IP.subtotal_item item_subtotal,
                CASE COALESCE(I.item_indisponivel, 0)
                    WHEN 1 THEN "Não"
                    ELSE "Sim"
                END disponivel
            FROM
                item_pedido IP  
                INNER JOIN pedido P        ON P.cod_pedido_auto = IP.cod_pedido_auto
                INNER JOIN item I          ON I.cod_item_auto = IP.cod_item_auto
                INNER JOIN tamanho_item TI ON TI.cod_item_auto = IP.cod_item_auto
                INNER JOIN tamanho T       ON T.cod_tamanho_auto = TI.cod_tamanho_auto
            WHERE   
                IP.cod_pedido_auto = ?
            ORDER BY 
                seq_item ASC;
            ';
        //echo '<br>Você deve ajustar o SQL getDetalhesPedido!<br>';

        $lista = array();
        $query = $this->db->query($sql, $codPedido);
        if ($query && $query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $lista[] = $row;
            }
        }

        return $lista;
    }

    public function getUltimos5Pedidos($codCliente){
        $sql = '
            SELECT 
                P.cod_pedido_auto,
                P.data_pedido,
                COALESCE(E.nome_fantasia, E.razao_social, "Empresa sem Nome") nome_empresa,
                P.total_pedido
            FROM   
                pedido P
                INNER JOIN local_entrega LE    ON LE.cod_local_auto = P.cod_local_auto
                INNER JOIN forma_pagto_emp FPE ON P.cod_forma_emp_auto = FPE.cod_forma_emp_auto
                INNER JOIN empresa E           ON FPE.cod_empresa_auto = E.cod_empresa_auto
            WHERE  
                LE.cod_cliente_auto = ?
            ORDER BY 
                P.cod_pedido_auto DESC
            LIMIT 5;
            ';
        //echo '<br>Você deve ajustar o SQL getUltimos5Pedidos!<br>';

        $query = $this->db->query($sql, $codCliente);
        //$query = $this->db->query($sql);
        $lista = array();

        if ($query && $query->num_rows() > 0){
            foreach ($query->result() as $row){
                $lista[] = $row;
            }
        }

        return $lista;
    }

    public function login($email, $senha){
        $validacao = array(true, '');
        $cliente   = new Cliente($email);

        if($cliente->hasID()){
            if($cliente->comparePassword($senha)){
                if($cliente->isAtivo()){
                    if(!$cliente->isBloqueado()){
                        $validacao = array(true, $cliente->getCodCliente(), $cliente->getNome());
                    }else{
                        $validacao = array(false, 'Seu cadastro está bloqueado. Caso queira reativar, entre em '.anchor('universo_delivery/contato', 'Contato').'.');
                    }
                }else{
                    $validacao = array(false, 'Cadastro não foi ativado. Confira seu e-mail.');
                }
            }else{
                $validacao = array(false, 'Senha não confere.');
            }

        }else{
            $validacao = array(false, 'Usuário não encontrado.');
        }

        return $validacao;
    }

    public function getLocaisEntrega($idCliente){
        $LocalEntrega = new LocalEntrega();
        return $LocalEntrega->carregarListaLocais($idCliente);
    }

    public function setLocalEntrega($localEntrega){

    	$LocalEntrega = new LocalEntrega();
    	return $LocalEntrega->gravar($localEntrega);
    }

    public function setNovoLocalEntrega($localEntrega){
    	if (empty($localEntrega->cod_cliente_auto)){
    		$LocalEntrega = new LocalEntrega();
    		return $LocalEntrega->incluir($localEntrega);
    	}
    }

    public function getPedidos($idCliente, $diasAtras){
        $pedidos = new Pedido();
        return $pedidos->carregarListaPedidos($idCliente, $diasAtras);
    }

    public function getItemsPedido($cod_pedido_auto){
        $pedido = new Pedido();
        return $pedido->carregarItensPedido($cod_pedido_auto);
    }

    public function getAdicionaisItemPedido($codItemPedido)
    {
        $sql = '
            SELECT  i.desc_ingrediente   ingrediente,
                    ad.qtd_adicional     qtd,
                    i.preco_ingrediente  preco_unitario,
                    ad.subtotal_adic     subtotal,
                    ip.cod_pedido_auto   cod_pedido_auto,
                    it.desc_item         item
            FROM    adicional_item_ped ad
                INNER JOIN ingrediente i  ON ad.cod_ingre_auto = i.cod_ingre_auto
                INNER JOIN item_pedido ip ON ad.cod_item_ped_auto = ip.cod_item_ped_auto
                INNER JOIN item it        ON ip.cod_item_auto = it.cod_item_auto
            WHERE   ad.cod_item_ped_auto = ?
            ORDER BY ingrediente ASC
            ';

        $query = $this->db->query($sql, $codItemPedido);
        $adicionais = array();

        if ($query && $query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $adicionais[] = $row;
            }
        }

        return $adicionais;
    }    
}